草庐IT

leetcode 2744

全部标签

LeetCode - 统计数组中的元素

1.统计数组中元素总结1.1统计元素出现的次数为了统计元素出现的次数,我们肯定需要一个map来记录每个数组以及对应数字出现的频次。这里map的选择比较有讲究:如果数据的范围有限制,如:只有小写字母、1000以内的正数等,这时我们可以通过一个数组来充当map;如果数据的范围没有限制,或者数据范围很大:如:int的数据范围,这时我们可以通过HashMap存储对应的key和value;可参考代码:for(inti=0;i1.2⭐统计元素在数组中出现的最左和最右位置首先想清楚一个问题:从左到右遍历,最后遍历到的就是最右元素;从右到左遍历,最后遍历到的就是最左元素;我们就可以依据此,创建left和rig

LeetCode - 统计数组中的元素

1.统计数组中元素总结1.1统计元素出现的次数为了统计元素出现的次数,我们肯定需要一个map来记录每个数组以及对应数字出现的频次。这里map的选择比较有讲究:如果数据的范围有限制,如:只有小写字母、1000以内的正数等,这时我们可以通过一个数组来充当map;如果数据的范围没有限制,或者数据范围很大:如:int的数据范围,这时我们可以通过HashMap存储对应的key和value;可参考代码:for(inti=0;i1.2⭐统计元素在数组中出现的最左和最右位置首先想清楚一个问题:从左到右遍历,最后遍历到的就是最右元素;从右到左遍历,最后遍历到的就是最左元素;我们就可以依据此,创建left和rig

【LeetCode栈与队列#05】滑动窗口最大值

滑动窗口最大值力扣题目链接(opensnewwindow)给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?提示:1-10^41思路虽然本题在LeetCode上为困难级别,但是似乎很容易想到对应的暴力解法,首先我们得明白这题难在哪里使用暴力解法本题的难点在于使用一般的方法解,时间复杂度会很高一种很自然的想法是:滑动窗口遍历过程中,我们又去遍历窗口内的数,比较大小后返回最大值那么这种方法的时间复杂度为O(n*k),k为窗口大小,n为数组遍历

【LeetCode栈与队列#05】滑动窗口最大值

滑动窗口最大值力扣题目链接(opensnewwindow)给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?提示:1-10^41思路虽然本题在LeetCode上为困难级别,但是似乎很容易想到对应的暴力解法,首先我们得明白这题难在哪里使用暴力解法本题的难点在于使用一般的方法解,时间复杂度会很高一种很自然的想法是:滑动窗口遍历过程中,我们又去遍历窗口内的数,比较大小后返回最大值那么这种方法的时间复杂度为O(n*k),k为窗口大小,n为数组遍历

【LeetCode二叉树#17】在二叉搜索树中插入或删除某个值(涉及重构二叉树、链表基础、以及内存泄漏问题)

二叉搜索树中的插入操作力扣题目链接(opensnewwindow)给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回任意有效的结果。提示:给定的树上的节点数介于0和10^4之间每个节点都有一个唯一整数值,取值范围从0到10^8-10^8新值和原始二叉搜索树中的任意节点值都不同思路就正常遍历二叉搜索树,因为二叉搜索树的性质,我们可以通过当前值大小控制遍历方向:​ 如果待插入节点小于当前节点,那么继续向当前节点的

【LeetCode二叉树#17】在二叉搜索树中插入或删除某个值(涉及重构二叉树、链表基础、以及内存泄漏问题)

二叉搜索树中的插入操作力扣题目链接(opensnewwindow)给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回任意有效的结果。提示:给定的树上的节点数介于0和10^4之间每个节点都有一个唯一整数值,取值范围从0到10^8-10^8新值和原始二叉搜索树中的任意节点值都不同思路就正常遍历二叉搜索树,因为二叉搜索树的性质,我们可以通过当前值大小控制遍历方向:​ 如果待插入节点小于当前节点,那么继续向当前节点的

Leetcode Practice -- 字符串

目录14.最长公共前缀思路解析151.反转字符串中的单词思路解析125.验证回文串思路解析415.字符串相加思路解析3.无重复字符的最长子串思路解析8.字符串转换整数(atoi)思路解析14.最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。输入:strs=["flower","flow","flight"]输出:"fl"思路解析stringlongestCommonPrefix(vector&strs){stringres;if(strs.empty()){returnres;}for(size_ti=0;i=strs[j].length()||

Leetcode Practice -- 字符串

目录14.最长公共前缀思路解析151.反转字符串中的单词思路解析125.验证回文串思路解析415.字符串相加思路解析3.无重复字符的最长子串思路解析8.字符串转换整数(atoi)思路解析14.最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。输入:strs=["flower","flow","flight"]输出:"fl"思路解析stringlongestCommonPrefix(vector&strs){stringres;if(strs.empty()){returnres;}for(size_ti=0;i=strs[j].length()||

【LeetCode二叉树#16】二叉(搜索)树的最近公共祖先(递归后序遍历,巩固回溯机制)

二叉树的最近公共祖先力扣题目链接(opensnewwindow)给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root=[3,5,1,6,2,0,8,null,null,7,4]示例1:输入:root=[3,5,1,6,2,0,8,null,null,7,4],p=5,q=1输出:3解释:节点5和节点1的最近公共祖先是节点3。示例2:输入:root=[3,5,1,6,2,0,8,null,null,

【LeetCode二叉树#16】二叉(搜索)树的最近公共祖先(递归后序遍历,巩固回溯机制)

二叉树的最近公共祖先力扣题目链接(opensnewwindow)给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root=[3,5,1,6,2,0,8,null,null,7,4]示例1:输入:root=[3,5,1,6,2,0,8,null,null,7,4],p=5,q=1输出:3解释:节点5和节点1的最近公共祖先是节点3。示例2:输入:root=[3,5,1,6,2,0,8,null,null,